Cyclic Abduction of Inductively Defined Safety and Termination Preconditions

نویسندگان

  • James Brotherston
  • Nikos Gorogiannis
چکیده

We describe a new method, called cyclic abduction, for automatically inferring safety and/or termination preconditions for heap-manipulating while programs, expressed as inductive definitions in separation logic. Cyclic abduction essentially works by searching for a cyclic proof of memory safety and/or termination, abducing definitional clauses of the precondition as necessary in order to advance the proof search process. This is achieved via a suite of heuristically guided automatic tactics. We have implemented our cyclic abduction procedure as an automatic tool, Caber, that automatically infers the correct safety and termination preconditions for a range of common small programs manipulating lists and trees, and can also abduce the definitions of more exotic data structures such as cyclic or segmented lists, or trees of linked lists. To our knowledge, cyclic abduction is the first technique for automatically abducing such inductive definitions from

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Realizability in Cyclic Proof: Extracting Ordering Information for Infinite Descent

In program verification, measures for proving the termination of programs are typically constructed using (notions of size for) the data manipulated by the program. Such data are often described by means of logical formulas. For example, the cyclic proof technique makes use of semantic approximations of inductively defined predicates to construct Fermat-style infinite descent arguments. However...

متن کامل

Abstraction Refinement for Separation Logic Program Analyses

ion Refinement for Separation Logic Program Analyses Matko Botinčan, Mike Dodds, and Stephen Magill 1 University of Cambridge, {matko.botincan,mike.dodds}@cl.cam.ac.uk 2 [email protected] Abstract. Abstract domains based on separation logic allow the compositional analysis of heap-manipulating programs, and their effectiveness on real-world software has been extensively demonstrated. Tra...

متن کامل

A Tutorial on Type-Based Termination

Type-based termination is a method to enforce termination of recursive definitions through a non-standard type system that introduces a notion of size for inhabitants of inductively defined types. The purpose of this tutorial is to provide a gentle introduction to a polymorphically typed λ-calculus with type-based termination, and to the size inference algorithm which is used to guarantee autom...

متن کامل

Propositional Reasoning about Safety and Termination of Heap-Manipulating Programs

This paper shows that it is possible to reason about the safety and termination of programs handling potentially cyclic, singlylinked lists using propositional reasoning even when the safety invariants and termination arguments depend on constraints over the lengths of lists. For this purpose, we propose the theory SLH of singly-linked lists with length, which is able to capture non-trivial int...

متن کامل

Generalized and Formalized Uncurrying

Uncurrying is a termination technique for applicative term rewrite systems. During our formalization of uncurrying in the theorem prover Isabelle, we detected a gap in the original pen-and-paper proof which cannot directly be filled without further preconditions. Our final formalization does not demand additional preconditions, and generalizes the existing techniques since it allows to uncurry ...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 2014